//
//  EZTallyAutoPtr.cpp
//  zhaitu
//
//  Created by ellzu on 13-8-4.
//  Copyright (c) 2013年 ellzu. All rights reserved.
//

#include "EZTallyAutoPtr.h"

using namespace EZTally;

EZTallyAutoPtr::EZTallyAutoPtr()
{
    object = 0;
}

EZTallyAutoPtr::~EZTallyAutoPtr()
{
    Clear();
}

EZTallyAutoPtr::EZTallyAutoPtr(const EZTallyAutoPtr &other)
{
    object = 0;
    CopyOther(other);
}

EZTallyAutoPtr& EZTallyAutoPtr::operator=(const EZTallyAutoPtr &other)
{
    CopyOther(other);
    return *this;
}

void EZTallyAutoPtr::CopyOther(const EZTallyAutoPtr &other)
{
    Set(other.object,true);
}


EZTallyObject* EZTallyAutoPtr::Get()
{
    return object;
}
void EZTallyAutoPtr::Set(EZTallyObject *obj,bool willRetain)
{
    if (willRetain==true && obj!=0) {
        obj->Retain();
    }
    Clear();
    object = obj;
}

void EZTallyAutoPtr::Clear()
{
    if (object!=0) {
        object->Release();
        object = 0;
    }
}
